/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladora;

import persistencia.Pacientes;
import clinicanutricao.Paciente;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Kdc
 */
public class cPaciente {

    Pacientes listaPacientes;

    public cPaciente() {

        listaPacientes = new Pacientes();

    }

    public Pacientes getListaPacientes() {
        return listaPacientes;
    }

    public void setListaPacientes(Pacientes listaPacientes) {
        this.listaPacientes = listaPacientes;
    }

    public void cadastarPaciente(String pNome, String pDataNascimento, char pSexo, double pAltura, double pPeso, double pQuadril) {
        Paciente p = new Paciente(pNome, pDataNascimento, pSexo, pAltura, pPeso, pQuadril);
        p.atualizaIAC();
        p.atualizaIMC();

        int op = JOptionPane.showConfirmDialog(null, "Confirma Dados do Paciente?");
        if (op == 0) {
            listaPacientes.adiciona(p);
            JOptionPane.showMessageDialog(null, "Paciente Salvo com Sucesso!");
        }

    }

    public void carregarPacientes() {
        listaPacientes.leitura();
    }

    public boolean existePacienteCadastrado(String pNome) {
        if (listaPacientes.buscarPacientePorNome(pNome) != null) {
            return true;
        } else {
            return false;
        }

    }

    public Paciente buscarPaciente(String pNomePaciente) {

        return listaPacientes.buscarPacientePorNome(pNomePaciente);
    }

    public List buscarPacientes(String pNomePaciente) {
        List listPacientes = new ArrayList();

        //programar a busca
        return (ArrayList<Paciente>) listPacientes;
    }

    public String exibeClassificacaoIMC(String pNomePaciente) {
        Paciente p = buscarPaciente(pNomePaciente);

        if (p.getSexo() == 'M') {
            if (p.getImc() < 20.7) {
                return "Abaixo do Peso";
            } else if (p.getImc() >= 20.7 && p.getImc() < 26.4) {
                return "No Peso Normal";
            } else if (p.getImc() >= 26.4 && p.getImc() < 27.8) {
                return "Marginalmente Acima do Peso";
            } else if (p.getImc() >= 27.8 && p.getImc() < 31.1) {
                return "Acima do Peso Ideal";
            } else if (p.getImc() >= 31.1) {
                return "Obeso";
            }
        } else {
            if (p.getImc() < 19.1) {
                return "Abaixo do Peso";
            } else if (p.getImc() >= 19.1 && p.getImc() < 25.8) {
                return "No Peso Normal";
            } else if (p.getImc() >= 25.8 && p.getImc() < 27.3) {
                return "Marginalmente Acima do Peso";
            } else if (p.getImc() >= 27.3 && p.getImc() < 32.3) {
                return "Acima do Peso Ideal";
            } else if (p.getImc() >= 32.3) {
                return "Obeso";
            }
        }

        return "INDISPONIVEL";

    }

    public String exibeClassificacaoIAC(String pPaciente) {
        Paciente p = buscarPaciente(pPaciente);

        if (p.getSexo() == 'M') {
            if (p.getIac() >= 8 && p.getIac() < 20) {
                return "Normal";
            } else if (p.getIac() >= 20 && p.getIac() < 25) {
                return "Sobrepeso";
            } else if (p.getIac() >= 25) {
                return "Obeso";
            }
        } else {
            if (p.getIac() >= 21 && p.getIac() <= 32) {
                return "Normal";
            } else if (p.getIac() >= 33 && p.getIac() <= 38) {
                return "Sobrepeso";
            } else if (p.getIac() >= 39) {
                return "Obeso";
            }

        }

        return "INDISPONIVEL";

    }

    public String buscarIMCdoPaciente(String pNomePaciente) {
        Paciente p = buscarPaciente(pNomePaciente);
        BigDecimal x = new BigDecimal(p.getImc());
        x = x.setScale(2, BigDecimal.ROUND_HALF_UP);

        return String.valueOf(x);

    }

    public String buscarIACdoPaciente(String pNomePaciente) {
        Paciente p = buscarPaciente(pNomePaciente);
        BigDecimal x = new BigDecimal(p.getIac());
        x = x.setScale(2, BigDecimal.ROUND_HALF_UP);

        return String.valueOf(x);

    }

    public void ExcluirPaciente(String pNome) {

        for (int i = 0; i < listaPacientes.getPacientes().size(); i++) {
            Paciente p = (Paciente) listaPacientes.getPacientes().get(i);
            if (p.getNome().toLowerCase().equals(pNome.toLowerCase())) {
                listaPacientes.excluir(p);
                listaPacientes.grava();
            }
        }

    }
}
